#ifndef _RKNN_ZERO_COPY_DEMO_POSTPROCESS_H_
#define _RKNN_ZERO_COPY_DEMO_POSTPROCESS_H_

#include <stdint.h>
#include <vector>

#define LABEL_NALE_TXT_PATH "./model/coco_80_labels_list.txt"
#define MODEL_PATH "./model/yolov5s-640-640.rknn"

#define OBJ_NAME_MAX_SIZE 16
#define OBJ_NUMB_MAX_SIZE 64
#define OBJ_CLASS_NUM 80
#define NMS_THRESH 0.6
#define BOX_THRESH 0.5
#define PROP_BOX_SIZE (5 + OBJ_CLASS_NUM)

typedef struct _BOX_RECT {
	int left;
	int right;
	int top;
	int bottom;
} BOX_RECT;

typedef struct __detect_result_t {
	char name[OBJ_NAME_MAX_SIZE];
	BOX_RECT box;
	float prop;
} detect_result_t;

typedef struct _detect_result_group_t {
	int id;
	int count;
	detect_result_t results[OBJ_NUMB_MAX_SIZE];
} detect_result_group_t;

int post_process(int8_t *input0, int8_t *input1, int8_t *input2, int model_in_h, int model_in_w, float conf_threshold, float nms_threshold, float scale_w, float scale_h, std::vector<int32_t> &qnt_zps,
		 std::vector<float> &qnt_scales, detect_result_group_t *group);

void deinitPostProcess();
#endif //_RKNN_ZERO_COPY_DEMO_POSTPROCESS_H_
